package com.iqik.handler;

import com.iqik.common.UserService;
import com.iqik.server.UserServiceImpl;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;

/**
 * 自定义业务处理器
 */
public class UserServiceHandler extends ChannelInboundHandlerAdapter {

    /**
     * 当客户端读取数据时，该方法被调用
     * @param ctx
     * @param msg
     * @throws Exception
     */
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
        // 1。判断当前的请求是否符合规则
        // 客户端发送的请求会传递一个参数 clazz#method#args
        if (msg.toString().startsWith("UserService")) {
            // 2。如果符合规则，调用实现类返回结果
            UserService service = new UserServiceImpl();
            String result = service.sayHello(msg.toString().substring(msg.toString().lastIndexOf("#")+1));
            // 3。把调用实现类方法的结果写回到客户端
            ctx.writeAndFlush(result);
        }
    }
}
